<?php
/**
 * 模块: 管理员管理
 * User: 文丹
 * Date: 2018/1/26
 * Time: 10:08
 */
namespace app\admin\model;
use think\Model;
use think\Db;
class Manager extends Model{
    /**
     *  添加 管理员
     * @param $data
     * @return int|string
     */
    public function saveManager($data){
        return Db::name('manager')->insert($data);
    }

    /**
     * 查询 全部管理员 分页
     * @return \think\Paginator
     */
    public function getManagers(){
        return Db::name('manager')
            ->where('admin_del',0)
            ->whereNotIn('role_id',1)
            ->order('id desc')
            ->paginate(10)->each(function($item,$key){
           $item['role_name']= Db::name('role')->where('id',$item['role_id'])->value('name');
            return $item;
        });
    }
    public function count(){
        return Db::name('manager')->where('admin_del',0)->count();
    }
    public function getSuperAdmin(){
        return Db::name('manager')
            ->alias('m')
            ->join('role r','m.role_id = r.id')
            ->where('r.id',1)
            ->find();
    }

    /**.
     * 查询 单个管理员
     * @param $id
     * @return array|false|mixed|\PDOStatement|string|Model
     */
    public function findManager($id){
        return Db::name('manager')->where('id',$id)->find();
    }

    /**
     * 管理员 - 修改保存
     * @param $data
     * @param $id
     */
    public function editManager($data,$id){
        return Db::name('manager')->where('id',$id)->update($data);
    }

    /**
     * 管理员 - 停用
     * @param $id
     * @return int|string
     */
    public function stop($id){
        return Db::name('manager')->where('id',$id)->update(['is_able'=>0]);
    }

    /**
     * 管理员 - 启用
     * @param $id
     * @return int|string
     */
    public function start($id){
        return Db::name('manager')->where('id',$id)->update(['is_able'=>1]);
    }

    /**
     * 逻辑上删除- 管理员
     * @param $id
     * @return int|string
     */
    public function deleteManager($id){
        return Db::name('manager')->where('id',$id)->update(['admin_del'=>1]);
    }

    /**
     * 查询回收站 - 管理员
     * @return $this
     */
    public function getDelManager(){
        return Db::name('manager')->where('admin_del',1)->order('id desc')->paginate(10)->each(function($item,$key){
            $item['role_name']= Db::name('role')->where('id',$item['role_id'])->value('name');
            return $item;
        });
    }

    /**
     * @return int|string
     */
    public function getDelCount(){
        return Db::name('manager')->where('admin_del',1)->count();
    }

    /**
     *  管理员 - 再次启用
     * @param $id
     * @return int|string
     */
    public function enableManager($id){
        return Db::name('manager')->where('id',$id)->update(['admin_del'=>0]);
    }

    /**
     * @param $id
     * @return int
     * 管理员 - 测定删除
     */
    public function removeManager($id){
        return Db::name('manager')->where('id',$id)->delete();
    }

    /**
     * 管理员按时间 - 搜索
     * @param $logmin
     * @param $logmin
     */
    public function searchTime($logmin,$logmax){
        if(!empty($logmin) && !empty($logmax)){
            return Db::name('manager')
                ->where('admin_time','>=',$logmin)
                ->where('admin_time','<=',$logmax)
                ->paginate(5)->each(function($item,$key){
                $item['role_name']= Db::name('role')->where('id',$item['role_id'])->value('name');
                return $item;
            });
        }else if(!empty($logmin) && empty($logmax)){
            return Db::name('manager')
                ->where('admin_time','>=',$logmin)
                ->paginate(5)->each(function($item,$key){
                    $item['role_name']= Db::name('role')->where('id',$item['role_id'])->value('name');
                    return $item;
                });
        }else if(empty($logmin) && !empty($logmax)){
            return Db::name('manager')
                ->where('admin_time','<=',$logmax)
                ->paginate(5)->each(function($item,$key){
                    $item['role_name']= Db::name('role')->where('id',$item['role_id'])->value('name');
                    return $item;
                });
        }

    }
    public function countTime($logmin,$logmax){
        if(!empty($logmin) && !empty($logmax)){
            return Db::name('manager')
                ->where('admin_time','>=',$logmin)
                ->where('admin_time','<=',$logmax)
                ->count();
        }else if(!empty($logmin) && empty($logmax)){
            return Db::name('manager')
                ->where('admin_time','>=',$logmin)
                ->count();
        }else if(empty($logmin) && !empty($logmax)){
            return Db::name('manager')
                ->where('admin_time','<=',$logmax)
                ->count();
        }

    }

    /**
     * @param $account
     * 按账号 - 搜索
     */
    public function searchAccount($account){
        return Db::name('manager')
            ->where('account',$account)
            ->paginate(5)->each(function($item,$key){
                $item['role_name']= Db::name('role')->where('id',$item['role_id'])->value('name');
                return $item;
            });
    }
    public function countAccount($account){
        return Db::name('manager')
            ->where('account',$account)
            ->count();
    }

    /**
     * 按角色id - 搜索
     * @param $role_id
     */
    public function searchRole($role_id){
        return Db::name('manager')
            ->where('role_id',$role_id)
            ->paginate(5)->each(function($item,$key){
                $item['role_name']= Db::name('role')->where('id',$item['role_id'])->value('name');
                return $item;
            });
    }
    public function countRole($role_id){
        return Db::name('manager')
            ->where('role_id',$role_id)
            ->count();
    }

    /**
     * 根据账号查询管理员
     * @param $account
     * @return array|false|mixed|\PDOStatement|string|Model
     */
    public function findAccount($account){
        return Db::name('manager')
            ->where('account',$account)
            ->find();
    }

    /**
     * 除去本身 - 根据账号查询管理员
     * @param $account
     * @param $id
     * @return array|false|mixed|\PDOStatement|string|Model
     */
    public function checkAccount($account,$id){
        return Db::name('manager')
            ->where('account',$account)
            ->whereNotIn('id',$id)
            ->find();
    }
    /**
     *  根据管理员id 查询 角色id
     * @param $id
     * @return mixed
     */
    public function getRoleID($id){
        return  Db::table('manager')
            ->where('id',$id)
            ->value('role_id');
    }

}